"""
继承
    概述：
        Python中的继承指的是子类继承父类的属性和行为，现实世界中的继承指的是 子承父业

    格式：
        class 类A(类B)
            pass

    名词解释：
        类A： 子类  派生类
        类B： 父类， 超类 ，基类

    好处：
        1. 提升代码复用性
        2. 子类不需要拥有属性和方法，即可以直接使用
        3. 让类和类之间产生关系，是多态的前提
    弊端：
        1.类与类之间的耦合性增强了，父类不好的成员，子类想没有都不行
    开发原则：
        高内聚，低耦合
        内聚： 类自己独立处理问题的能力，
        耦合： 类之间的关系
    细节：
        所有的类都直接或者间接的继承自Object, 他是所有类的父类(也叫顶层类，顶级类，基类)

"""
# 案例：定义Person类，默认拥有 姓名，年龄，性别，家庭住址， 吃法，睡觉，说话
      # 1. 定义子类 Student， 有学号，姓名，年龄，性别，家庭住址， 吃法，睡觉，说话，学习
      # 2. 定义子类 Teacher， 有姓名，年龄，性别，家庭住址,工资， 吃法，睡觉，说话，讲课
      # 3. 定义子类 Doctor， 有姓名，年龄，性别，家庭住址 级别， 吃法，睡觉，说话，做手术

# 定义父类
class Person:

    def __init__(self,name,age,gender,address):
        self.name = name
        self.age = age
        self.gender = gender
        self.address = address

    def eat(self):
        print(f'我叫{self.name},我喜欢吃饭')

    def sleep(self):
        print(f'我叫{self.name},我喜欢睡觉')

    def speak(self):
        print(f'我叫{self.name},我喜欢说话')


# 定义学生类
class Student(Person):
    pass

# 定义老师类
class Teacher(Person):
    pass

class Doctor(Person):
    pass

if __name__ == '__main__':
    s1 = Student('刘千琪',18,'女','吉林长春',15)
    s1.speak()


    t1 = Teacher('张纪豪',32,'男','北京丰台')
    t1.eat()

    d1 = Doctor('李时珍',24,'男','湖北蕲春')
    d1.speak()